package modelo;

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

import modelo.mensajes.MensajeTexto;
import observer.IObservador;


public class Modelo_de_Tabla extends AbstractTableModel implements IObservador {

	private static final long serialVersionUID = 5856490266050461771L;

	// Columnas de la tabla
	private String[] nombres_col = {"ID C.A.P", "ID Mensaje", "Mensaje"};
	// Objetos de la tabla
	private ArrayList<MensajeTexto> lista_items;
	
	public Modelo_de_Tabla(){
		// lista_items = l;
	}
		
	@Override
	public int getColumnCount() {
		return 3;
	}

	@Override
	public int getRowCount() {
		return lista_items.size();
	}

	@Override
	public Object getValueAt(int row, int col) {
		Object ret = null;		
		MensajeTexto item = lista_items.get(row);
		switch(col){
			case -1: ret = item;
				break;
			case 0: ret  = item.getIDorigen();
				break;
			case 1: ret  = item.getID();
				break;
			case 2: ret  = item.getCuerpo();
				break;
		}
				
		return ret;
	}
	
	public String getColumnName(int col) {
        return nombres_col[col];
    }
	
	// Lista items es una referencia a la misma lista que esta en el centro de mensajes
	public void setDatos(ArrayList<MensajeTexto> l){
		 lista_items = l;
	}
	
	private void agregar_fila(){	
		int tam = lista_items.size() - 1;
		fireTableRowsInserted(tam , tam); 
	}

	private void quitar_fila(int row){
		fireTableRowsDeleted(row, row);
	}
	
	/* Patron Observer - Sujeto */

	@Override
	public void update_insercion() {
		// Ojo, no paso que fila se agrega xq siempre entran x abajo! (en la tabla)
		agregar_fila();
	}

	@Override
	public void update_quitar(int i) {
		quitar_fila(i);
	}

}
	
